/-app ...
/-app/boot
Boot.ts
/-app/layout
/-app/loaded ...
/-app/loaded/tree
AssemblyDetails.ts
Page.ts
PageUnmanaged.ts
/-app/loading
DomBase64Source.ts
FileReaderSource.ts
LoadFile.ts
/-app/mscorlib
Application.ts
earlyinit.js
format.ts
functions.ts
ko.ts
lateinit.js
/-core
/-headers
/-imports
/-io
/-managed
/-typings
/-unmanaged
pe.html
pe.ts
1
module pe.app.loaded {
2
 
3
  export class Page {
4
 
5
    details: AssemblyDetails;
6
 
7
    peHeaders: PEHeadersNode;
8
    references: ReferencesNode;
9
    namespaces: NamespaceNode[];
10
 
11
    unmanagedImports: UnmanagedImportsNode;
12
    unmanagedResources: UnmanagedResourcesNode;
13
 
14
    selectedNode = ko.observable<BaseNode>(null);
15
 
16
    constructor(
17
      private _assembly: managed.Assembly) {
18
 
19
      this.details = new AssemblyDetails(this._assembly);
20
      this.peHeaders = new PEHeadersNode(null, this._assembly.fileHeaders);
21
      this.references = new ReferencesNode(null, this._assembly);
22
 
23
      this.namespaces = Page.createNamespaceNodes(this._assembly);
24
 
25
      this.unmanagedImports = new UnmanagedImportsNode(null);
26
      this.unmanagedResources = new UnmanagedResourcesNode(null);
27
 
28
      this.peHeaders.click = <any>(this.peHeaders.handleClick = () => {
29
        this.selectedNode(this.peHeaders);
30
      });
31
 
32
 
33
        for (var i = 0; i < this.namespaces.length; i++) { 
34
          var ns = this.namespaces[i];
35
          ns.childClick = (src, chnode) => {
36
            this.selectedNode(chnode);
37
          }
38
        }
39
  
40
    }
41
 
42
    open(data) { 
43
      alert('Page.open()');
44
    }
45
 
46
    attachFileInput(input: HTMLInputElement) {
47
      input.onchange = () => {
48
        if (input.files && input.files.length) {
49
          this.open(input.files[0]);
50
        }
51
      };
52
    }
53
 
54
    static createNamespaceNodes(assembly: managed.Assembly) { 
55
      var byNamespace: { [namespace: string]: { [name: string]: managed.Type; }; } = {};
56
 
57
      assembly.types.forEach(t=> {
58
        var nsTypes = byNamespace[t.namespace] || (byNamespace[t.namespace] = {});
59
        nsTypes[t.name] = t;
60
      });